home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs66.d81 / gbnotes.prg (.txt) < prev    next >
GEOS ConVerT  |  2009-10-10  |  9KB  |  167 lines

  1. GB Notes #1
  2. PRG formatted GEOS file V1.0
  3. Epson FX-80
  4. OP V2.0 or higher
  5. BLASTER'S CONVERTER V2.5
  6. Write Image V1.1
  7. Red Storm
  8. geoWrite    V1.1
  9.   This file was created with
  10. Wrong is Write.
  11.   Written by Joe Buckley.
  12.      @geoBasic Module Definitions:
  13. VLIR #    Constant    Loads @    Description
  14. R_MAIN    $0400    Resident code. Two JMP's @ $0400 then skip
  15.                 to $07fc to leave room for screen memory.
  16.                 This module contains all the code that must
  17.                 always be available.  All the other modules
  18.                 use the subroutines contained here.
  19.     1    R_FILE    $4ec7    High level disk file stuff (Rename, Open, etc).
  20.     2    R_DA    *$75d8    Run's DA's.  *Loads inside FG_BUFFER on 64
  21.                 or SCREEN_BASE on the 128.  This keeps it
  22.                 from overwriting Basic's code.
  23.     3    R_INIT    $4ec7    geobasic Initialization code. Loaded from
  24.                 Resident code.    
  25.     4    R_LOAD    $7501    Basic Program loader. Loads into FG_BUFFER
  26.                 (see R_DA).
  27.     5    R_BINT    $4f96    Interpreter (BasRes). This is the module that
  28.                 actually runs the user's program.
  29.     6    R_BINT2    $0400
  30.     7    R_FONT    $6f8b    Font Manager (cFont, cSysInfo, and
  31.                 GetDiskBitmap).
  32.     8    R_DISK    $6f8b    Lower level disk stuff (reading bytes, etc).
  33.     9    R_PRINT    $6f8b    Printer Routines.
  34.     10    R_MENU    $4ec7    Menu Utility.
  35.     11    R_DBOX    $4ec7    Dialog Box Utility.
  36.     12    R_ICON    $4ec7    Icon Utility.
  37.     13    R_BMAP    $4ec7    Bitmap Utility.
  38.     14    R_SPRT    $4ec7    Sprite Utility.
  39.     15    R_EDIT    $4503    Editor.
  40.     16    R_APPL    $4b00    Make Application (run-time).
  41.     17    R_DEBUG    $47cc    Debugger.
  42.      @GB Program, Disk Layout
  43.      @Records 0 to 9 -
  44.  left empty to leave room for GB code when making run-time.
  45.      @Record #10 -
  46.  VLIR table.  Keeps track of what modules hold what line #'s.  Used for doing the VLIR splitting.  The table is a single sector and there is one eight byte entry for each program module.  The entries have the following format:
  47.     .word ?            ; Highest line number in module.
  48.     .word ?        ; Length_of_module (in bytes)
  49.     .byte ?        ; nesting_level
  50.     .byte ?        ; write_status
  51.     .byte ?        ; modified_status
  52.     .byte NULL        ; terminator
  53. The very first entry is a bit different.  It looks like this:
  54.     .word ???        ; (NULLS)
  55.     .byte x        ; number of entries in the VLIR table (not
  56.             ; counting this one which is entry #0).
  57.     .byte x        ; number of labels in the label table (minus 1,
  58.             ; labels are numbered from zero!).  If there
  59.             ; are no labels then it equals $ff.
  60.     .byte $f0?
  61.     .byte $f6?
  62.     .word ???
  63.      @Record #11 -
  64.  Object table.  All of the geos objects are store in this record, one right after the other.
  65.      @Record #12 -
  66.  Label Table.  Here is where the labels (@xxxx and object names) are stored.  Each label entry is 8 bytes long and has the following format:
  67.      @For @ labels:
  68.     .block 6    ; label name padded with NULLs
  69.     .word line_number
  70.      @For object labels (i.e. bitmaps, menus, icons, etc.):
  71.     .byte type        ; $80 = Menu
  72.             ; $81 = DB
  73.             ; $82 = Icon
  74.             ; $83 = Sprites
  75.             ; $84 = Bitmap
  76.     .block 5        ; object name padded with NULLs
  77.     .word address    ; where in memory the object is located.
  78.      @Record #13 onward - 
  79. Holds the basic program lines.  Each line has the following format:
  80.     .byte        ; length_of_line
  81.     .word        ; line_number
  82.     .block ???        ; now comes the tokenized text
  83.     .byte NULL        ; terminator
  84.      @Record #126 backward -
  85.  Disk loadable bitmaps are stored beginning at record #126.  Additional bitmaps are added backwards until they meet up with the program records.  Note that 
  86.  disk loadable bitmaps are stored here.  Regular bitmaps are stored in the Object Table (record #11).
  87.      @Getting Registers after a CALL:
  88. After using the CALL command use can get the return values of the registers by PEEKing the following memory locations:
  89.      @A    = 
  90. $28a (650)
  91.      @X     = 
  92. $28b (651)
  93.      @Y    = 
  94. $28c (652)
  95.      @SR    = 
  96. $28d (653)
  97.      @POP Command:
  98. The old (V1.0) Pop command had several serious bugs that caused a system crash.  The new version works like this:  executing a POP will remove the current GOSUB/WHILE/REPEAT stack frame.  In other words it will allow you to 'forget' that you are in a subroutine or loop (this does not apply to a FOR...NEXT loop).  One thing to keep in mind is that after executing a POP you must not allow the program to reach the RETURN/LOOP/UNTIL commands.  The best way of doing this is with a construct like this:
  99.     10 GOSUB DoSomething
  100.     20 END
  101.     50 @DoSomething
  102.     60   <various commands>
  103.     70   IF something = error THEN POP : GOTO @DoError
  104.     80 RETURN
  105.     100 @DoError
  106.     110    .... etc
  107. Of course if you are two levels deep in a subroutine and execute a POP, then you execute a RETURN the program will return TWO levels back rather then just one.  Could come in handy at times.
  108.      @GB Variables - zero page
  109. Name    Address    Size    Description
  110. basCur    $81/129    word    current character in basic memory
  111. basBegin    $83/131    word    pointer to beginning of basic
  112. basicEnd    $85/133    word    pointer to beginning of labels (minus 1
  113.             for end of basic)
  114. varBegin    $87/135    word    pointer to the beginning of variables
  115. arrayBegin    $89/137    word    pointer to the beginning of arrays
  116. arrayEnd    $8b/139    word    pointer to the end of arrays
  117. arrayLength    $8d/141    word    length of array/temporary register
  118. strnBegin    $8f/143    word    pointer to the beginning of strings
  119. zeroShift    $91/145    byte    used by floating point routines
  120. dec_pt    $92/146    byte    used by floating point routines
  121. varPtr    $93/147    word    pointer to value of variable
  122. machine_type    $95/149    byte    0 if c64, $80 if 128
  123. strnStack    $96/150    9 bytes    stack for three temp string descriptors
  124. strnStkIndx    $9f/159    byte    index into strnStack
  125. prevStrnStkIndx    $a0/160    byte    previous strnStack index
  126. rdIndex    $a1/161    byte    index to reading in strings
  127. gax2    $a2/162    word    (not commented in source code)
  128. curStrn    $a4/164    word    pointer to most current string that
  129.             was added or moved.
  130. strnDes    $a6/166    word    pointer to string descriptor
  131. descPtr    $a8/168    word    pointer to string descriptor     for string
  132.             operations.
  133. geosBegin    $aa/170    word    pointer to the beginning of object
  134.             (menus, icons, etc.) data.
  135. memAmnt    $ac/172    word    amount of memory to insert or delete
  136. curKeyBrdPos    $ae/174    word    (not commented in source)
  137. SetForIOTemp    $b0/176    word    (not commented in source)
  138. curLineNum    $b2/178    word    current line number being executed or
  139.             $ff in direct mode
  140. VLIRtabl    $b4/180    word    pointer to beginning of VLIR table
  141. xPos    $b6/182    word    X position for PRINT
  142. yPos    $b8/184    byte    Y position for PRINT
  143. opMask    $b9/185    byte    current comparison being performed
  144.             >/1, =/2, </4 or any combo of these
  145. comm_Flag    $ba/186    byte    flag for which command is currently
  146.             being executed: 0 = none, 1 = RUN,
  147.             -1 = LIST - used by the Editor
  148. dataPtr    $bc/188    word    pointer in basic to DATA statements
  149. FP_sgns    $be/190    byte    temp flag for sign of FP number
  150. exp_found    $bf/191    byte    flag for whether exponent was found
  151. fontBegin    $c0/192    word    pointer to beginning of font
  152. lastFontPtr    $c2/194    word    (not commented in source)
  153. curDBPtr    $c4/196    word    pointer to current dialog box data
  154. sprite stuff    $c6/198    36 bytes    internal sprite variables
  155. r16    $ea/234    word    more registers
  156. r17    $ec/236    word
  157. r18    $ee/238    word
  158. r19    $f0/240    word
  159. r20    $f2/242    word
  160. r21    $f4/244    word
  161. numDim    $f6/246    byte    number of dimensions in array
  162. grbackground    $f7/247    byte    FG/BG colors of graphics screen
  163. dig_found    $f8/248    byte    flag for whether a digit was found
  164.             when converting strings to FP
  165. operand_mask    $f9/249    byte    >/1, =/2, </4
  166. strnFlag    $fa/250    byte    $ff if string expected, else 0    
  167.